package collection;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 队列:
 * java.util.Queue接口。Queue继承自Collection
 * 队列可以保存一组元素，但是存取元素必须遵循先进先出原则。
 * 常见实现类:java.util.LinkedList.
 */
public class QueueDemo {
    public static void main(String[] args) {
        /** Queue 队列 */
        Queue<String> queue = new LinkedList<>();
        /** boolean offer(): 入队 */
        /*
            boolean offer(E e):队尾添元素
            入队操作，将元素添加到队列末尾.
         */
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("四");
        queue.offer("5");
        System.out.println(queue);
        /** E poll(): 出队 */
        /*
            E poll():队首出元素
            获取队首元素，获取后该元素从队列中被移除.
         */
        String str = queue.poll();
        System.out.println(str);
        System.out.println(queue);
        /** E peek(): 偷窥 */
        /*
            E peek():
            引用对手元素，获取后该元素仍然在队列中.
         */
        String s = queue.peek();
        System.out.println(s);
        System.out.println(queue);
        //Collection中定义
        System.out.println("size:"+queue.size());
        //可以使用新循环(迭代器)和forEach遍历
        for(String g : queue){
            System.out.println(g);
        }
        System.out.println(queue);
        queue.forEach(q-> System.out.println(q));
        System.out.println(queue);
        queue.forEach(System.out::println);
        System.out.println(queue);
        //使用poll方法遍历(一次性的)
        while (queue.size()>0){
            str = queue.poll();
            System.out.println(str);
        }
        System.out.println(queue);

//        for(int i=0;i<queue.size();){
//            String st = queue.poll();
//            System.out.println(st);
//        }

    }
}
